The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
When any type of error or slowdown happens in a system running on one or more virtual machines, it can be very difficult, if not impossible, to find the source of the error or slowdown. For example, a deadlock may occur because of a communication issue either with one of the virtual machines or between virtual machines. One hanging application in a virtual machine can cause problems for all of the virtual machines. One slow application or set of inefficient code running on one virtual machine can cause errors to propagate to multiple aspects of a distributed system, including among one or more virtual machines. Traditionally, administrators manually look over “thread dumps” (e.g., a text-based representation of state of a virtual machine) from the one or more virtual machines in order to find errors or to debug code. This can be exceedingly cumbersome. Further, such an approach does not let the administrator look into the past and find what may have been a source of all of the slowdown or error, only allowing analysis of current state as represented by the thread dump(s).
The techniques herein overcome these issues by providing state analysis for one or more virtual machines.